//是否有有效值
export function isValue(value) {
	return value.replace(/\s+/g, '') || '';
}

//将url中的参数转对象
export function queryStringToObject(str) {
	// 先用slice截取?号后面的参数,然后用split按&进行分割为数组
	let str2 = str.slice(1).split("&")
	let obj = {}
	for (let i = 0; i < str2.length; i++) {
		// 去除键值对之间的"="
		let res = str2[i].split("=")
		// 对新变量进行赋值
		obj[res[0]] = res[1]
	}
	return obj
}

// 获取指定字符后的所有字符串
export function getStringAfterChar(str, charToFind) {
	const parts = str.split(charToFind);
	return parts.length > 1 ? parts.slice(1).join(charToFind) : '';
}

// 价格转换 500转为5.00
export function priceConversion(price) {
	if(price){
		return Number(price).toFixed(2)
	}else{
		return 0.00
	}
}

//页面跳转获取事件通道并监听事件
export function getJumpData(type, funcName, callBack) {
	const chenal = this.getOpenerEventChannel()
	chenal[type] && chenal[type](funcName, callBack)
}

// 封装防抖
export function debounce(callback, time = 300) {
	console.log('防抖')
	var d = null;
	return function() {
		if (d != null) clearTimeout(d);
		var _this = this;
		var _event = arguments;
		d = setTimeout(function() {
			// 有回调函数，改变this指向，传递事件对象给callback
			callback && callback.apply(_this, _event)
			// 释放变量
			d = null;
		}, time)
	};
}

// 封装节流
export function throttle(callback, time = 300) {
	console.log('节流')
	var isShow = false;
	// 返回函数
	return function() {
		if (isShow) {
			return;
		} else {
			isShow = true;
			// 记录当前的this
			var _this = this;
			// 事件对象
			var arg = arguments;
			setTimeout(function() {
				// setTimeout里的this是window
				if (callback) callback.apply(_this, arg);
				isShow = false;
			}, time);
		}
	};
}

/*
 *唤起跳转微信小程序
 *miniId 小程序id
 *miniPath 小程序页面路径
 */
export function openMiniProgram(miniId, miniPath) {
	// #ifdef APP
	//获取终端支持的分享通道列表
	plus.share.getServices(function(s) {
		let sweixin = null;
		for (let i = 0; i < s.length; i++) {
			if (s[i].id == 'weixin') {
				sweixin = s[i];
			}
		}
		//判断是否有微信
		if (sweixin) {
			console.log(s)
			console.log('调起小程序')
			//唤起微信跳转小程序
			sweixin.launchMiniProgram({
				id: miniId,
				path: miniPath
			}, function() {
				return true;
			}, function(e) {
				console.log("微信唤起失败", e);
				uni.showToast({
					title: '微信唤起失败，请检查是否有微信应用',
					icon: 'none'
				})
				return false;
			})
		} else {
			uni.showToast({
				title: '微信唤起失败，请检查是否有微信应用',
				icon: 'none',
				duration: 3000
			})
			return false;
		}
	}, function(e) {
		console.log("微信唤起失败", e);
		uni.showToast({
			title: '微信唤起失败，请重试',
			icon: 'none',
			duration: 3000
		})
		return false;
	});
	// #endif
	// #ifdef MP-BAIDU || MP-TOUTIAO || MP-WEIXIN || MP-ALIPAY || MP-QQ
	uni.navigateToMiniProgram({
		appId: miniId,
		path: miniPath,
		success(res) {
			return true
		},
		fail(res) {
			uni.showToast({
				title: '跳转小程序失败',
				icon: 'none',
				duration: 3000
			})
			console.log('跳转小程序失败', res)
			return false;
		}
	})
	// #endif
	// #ifdef H5
	uni.request({
		url: `https://tool.gkzzd.cn/index/index/getAccessTokenForJump`,
		method: 'POST',
		data: {
			path: miniPath.split('?')[0],
			query: miniPath.split('?')[1] || '', // 短链的入参 例如:'a=1&b=2'
		},
		success(result) {
			console.log('生成网址：', result.data.data.url_link);
			window.location.href = result.data.data.url_link
		},
		fail(err) {
			console.log(err);
		}
	})
	// #endif
}

export function isWeChatBrowser() {
	// #ifdef H5
	var ua = window.navigator.userAgent.toLowerCase();
	if (ua.match(/micromessenger/i) == 'micromessenger') {
		//console.log('是微信客户端')  
		return true;
	} else {
		//console.log('不是微信客户端')  
		return false;
	}
	// #endif
	// #ifndef H5
	return false;
	// #endif
}
//截取hash地址中的参数
export function getHashUrlQuery(key) {
	// 获取查询字符串，优先使用search，如果没有则尝试从hash中获取
	const searchParams = new URLSearchParams(
		window.location.search || window.location.hash.split('?')[1] || '',
	)

	// 使用URLSearchParams API获取参数值
	const value = searchParams.get(key)

	// 如果找到参数值，进行解码并返回；否则返回null
	return value != null ? decodeURIComponent(value) : null
}

//判断一个对象是否是一个空对象
export function isEmptyObject(obj) {  
	return Object.keys(obj).length === 0 && obj.constructor === Object;  
}

// 获取二维码路径参数
export function getWxMiniProgramUrlParam(url){
	let theRequest = {};
	if (url.indexOf("#") != -1) {
		const str = url.split("#")[1];
		const strs = str.split("&");
		for (let i = 0; i < strs.length; i++) {
			theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
		}
	} else if (url.indexOf("?") != -1) {
		const str = url.split("?")[1];
		const strs = str.split("&");
		for (let i = 0; i < strs.length; i++) {
			theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
		}
	} else {
		const str = url;
		const strs = str.split("&");
		for (let i = 0; i < strs.length; i++) {
			theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
		}
	}
	return theRequest;
}

// 预览图片
export function previewImage(urls, current=0) {
	if(urls && !Array.isArray(urls)){
		urls = urls.split(',')
	}
	console.log(urls, 'urls')
	console.log(current, 'current')
	uni.previewImage({
		urls,
		current
	})
}

// 打电话
export function callPhone(number) {
	return new Promise((resolve,reject)=>{
		// #ifdef H5
		window.location.href = `tel:${number}`
		resolve()
		// #endif
		// #ifndef H5
		uni.makePhoneCall({
			phoneNumber:number,
			success: (res) => {
				resolve(res)
			},
			fail: (err) => {
				reject(err)
			}
		})
		// #endif
	})
}

//复制
export function copy(data) {
	uni.setClipboardData({
		data
	})
}

// 生成随机ID
export function generateRandomId() {
	const randomId = Date.now().toString(36) + Math.random().toString(36).substring(2);
	return randomId;
}

// 把html转义字符转化为正常字符
export function unescapeHTML(str) {
    return str.replace(/&quot;/g, '"')
              .replace(/&#39;/g, "'")
              .replace(/&lt;/g, '<')
              .replace(/&gt;/g, '>')
              .replace(/&amp;/g, '&');
}